package com.zpz.framework.zpzoauth.common.extend;

import java.io.*;

/**
 * @author zhangpanzhi
 * @version 创建时间：2017年6月13日 下午1:58:25
 */
public class StreamExtend {
    /**
     * inputStream转outputStream
     *
     * @param in
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static ByteArrayOutputStream toOutputStream(InputStream in) throws Exception {
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        int ch;
        while ((ch = in.read()) != -1) {
            swapStream.write(ch);
        }
        return swapStream;
    }

    /**
     * outputStream转inputStream
     *
     * @param out
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static ByteArrayInputStream toInputStream(OutputStream out) throws Exception {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        baos = (ByteArrayOutputStream) out;
        ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());
        return swapStream;
    }

    /**
     * inputStream转String
     *
     * @param in
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static String toString(InputStream in) throws Exception {
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        int ch;
        while ((ch = in.read()) != -1) {
            swapStream.write(ch);
        }
        return swapStream.toString();
    }

    /**
     * OutputStream 转String
     *
     * @param out
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static String toString(OutputStream out) throws Exception {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        baos = (ByteArrayOutputStream) out;
        ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());
        return swapStream.toString();
    }

    /**
     * String转inputStream
     *
     * @param in
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static ByteArrayInputStream toInputStream(String in) throws Exception {
        ByteArrayInputStream input = new ByteArrayInputStream(in.getBytes());
        return input;
    }

    /**
     * String 转outputStream
     *
     * @param in
     * @return
     * @throws Exception
     * @author zhangpanzhi 2017年6月13日
     */
    public static ByteArrayOutputStream toOutputStream(String in) throws Exception {
        return toOutputStream(new FileInputStream(new File(in)));
    }
}
